package com.xframe.xdal.core.manage;

import com.xframe.xdal.core.autofill.IAutoFillBean;
import com.xframe.xdal.core.model.mapping.IColumnMapping;
import lombok.Data;

import java.util.List;

/**
 * 功能描述：数据库字段实体对象
 * 创建人：
 * 创建时间：
 *
 * @version 1.0
 **/
@Data
public class DBColumnInfo implements IColumnMapping, Comparable<DBColumnInfo>{


    /**
     * 名称
     */
    private String columnName;

    /**
     * 数据类型
     */
    private String dbDataType;

    /**
     * 数据长度
     */
    private Integer dataLength;

    /**
     * 数据长度
     */
    private Integer dataPrecision;

    /**
     * 数据精度
     */
    private Integer dataScale;

    /**
     * 是否可以为空
     */
    private Boolean nullable;

    /**
     * 表名称
     */
    private String tableName;

    /**
     * 列的位置
     */
    private Integer orderNo;


    /**
     * 是否主键
     */
    private Boolean isPk = false;

    /**
     * 是否唯一
     */
    private Boolean isUnique = false;
    /**
     * 列描述
     */
    private String columnDesc;

    /**
     * 是否自动生成
     */
    private Boolean isAutofill = false;

    @Override
    public String getName() {
        return columnName;
    }

    @Override
    public String getFieldName() {
        return columnName;
    }

    @Override
    public boolean getPrimaryKeyFlag() {
        return isPk;
    }

    @Override
    public boolean getUniqueFlag() {
        return isUnique;
    }

    @Override
    public String getUniqueName() {
        return "main";
    }

    @Override
    public boolean getUseDbObjectFlag() {
        return false;
    }

    @Override
    public String getDbExpression() {
        return "";
    }

    @Override
    public Class<?> getDataType() {
        return null;
    }

    @Override
    public Integer getLength() {
        return dataLength;
    }

    @Override
    public boolean getDeleteFlag() {
        return false;
    }

    @Override
    public boolean getNullFlag() {
        return nullable;
    }

    @Override
    public boolean getDbGeneratedFlag() {
        return false;
    }

    @Override
    public boolean getVersionFlag() {
        return false;
    }

    @Override
    public String getDesc() {
        return columnDesc;
    }

    @Override
    public boolean getReadonly() {
        return false;
    }

    @Override
    public String getAkGroupName() {
        return "";
    }

    @Override
    public Integer getScale() {
        return dataScale;
    }

    @Override
    public List<IAutoFillBean> getAutoFillBeanList() {
        return null;
    }



    @Override
    public int compareTo(DBColumnInfo o) {
        return this.orderNo - o.orderNo;
    }
}
